Imaginez que vous êtes un architecte. Au lieu de dessiner un plan fixe pour une seule maison en briques, vous concevez un plan maître plan capable de s'adapter au bois, à l'acier ou au verre. En C++, c'est Programmation générique.
1. Le Mécanisme du Plan
Un liste de paramètres de modèle (par exemple, template <typename T>) introduit des espaces réservés appelés paramètres de type de modèle. Ceux-ci agissent comme des variables de type. Par exemple, dans template <typename T> ostream &print(ostream &os, const T &obj), T est déterminé uniquement lorsque la fonction est appelée.
2. Instanciation
Le compilateur ne compile pas le modèle lui-même en code machine. À la place, instanciation a lieu : le compilateur génère une version spécifique du code uniquement lorsqu'un argument de modèle est fourni. En raison de cela, les définitions doivent généralement résider dans les fichiers d'en-tête.
3. Écrire un Code Indépendant du Type
Pour maximiser la réutilisabilité, suivez la Meilleure Pratique: minimisez les exigences. Écrivez le code en utilisant uniquement l'opérateur < opérateur (via less<T>) réduit les exigences sur les types par rapport à l'utilisation de >, <=, et >=. La validation est souvent reportée ; le compilateur ne peut généralement pas détecter de nombreux erreurs à l'étape de compilation du modèle lui-même ; la plupart apparaissent pendant l'instanciation.